﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Automotriz.Core;
using System.Data;

namespace Crosland.Automotriz.Data.Dao.Linq
{
    public class clsT_Ven_Categoria_Clientes_Cab_DAO
    {
        private readonly AutomotrizEntities ContextoDeObjs = new AutomotrizEntities();

        public bool CategorizacionCliente(int anio, int mes, int cat_a, int cat_b, int cat_c, int mes_acumu, string usuario)
        {
            
            try
            {
                ContextoDeObjs.ExecuteStoreCommand("exec USP_CARGAR_CONCENTRACION_CLIENTES @AÑO={0}, @MES={1}, @CAT_A={2}, @CAT_B={3}, @CAT_C={4}, @MES_ACUMULADO={5}, @USUARIO={6}", anio, mes, cat_a, cat_b, cat_c, mes_acumu, usuario);
                return true;
                
            }
            catch (Exception)
            {
                return false;
            }
            

        }

        public IEnumerable<Object> Listar()
        {

            try
            {
                IEnumerable<Object> lista1 = new List<Object>();

                var q = from c in ContextoDeObjs.T_VEN_CATEGORIA_CLIENTES_CAB
                        orderby c.ANIO descending
                        select new
                        {
                            ID_CAT = c.ID_CAT,
                            FEC_CREACION = c.FEC_CREACION,
                            USUARIO = c.USUARIO,
                            ACTUALIZADO=c.USUARIO_ACTUALIZA,
                            FEC_ACTUALIZA=c.FEC_ACTUALIZA,
                            PORC_A = c.PORC_A_DESDE + " - " + c.PORC_A_HASTA ,
                            PORC_B = c.PORC_B_DESDE + " - " + c.PORC_B_HASTA,
                            PORC_C = c.PORC_C_DESDE + " - " + c.PORC_C_HASTA,
                            MES_ACU = c.MES_ACU,
                            ANIO = c.ANIO,
                            MES = c.MES == 1 ? "Enero" :
                                c.MES == 2 ? "Febrero" :
                                c.MES == 3 ? "Marzo" :
                                c.MES == 4 ? "Abril" :
                                c.MES == 5 ? "Mayo" :
                                c.MES == 6 ? "Junio" :
                                c.MES == 7 ? "Julio" :
                                c.MES == 8 ? "Agosto" :
                                c.MES == 9 ? "Setiembre" :
                                c.MES == 10 ? "Octubre" :
                                c.MES == 11 ? "Noviembre" :
                                c.MES == 12 ? "Diciembre" : "-"
                        };
                        
                lista1 = q.ToList();
                
                return lista1;

            }
            catch (Exception)
            {
                
                throw;
            }

        }

        public bool VerificarProceso(int anio,int mes)
        {

            var q = from c in ContextoDeObjs.T_VEN_CATEGORIA_CLIENTES_CAB
                    where c.ANIO == anio && c.MES == mes
                    select c;
            int cont = q.Count();

            if (cont==0)
            {
                return true;
            }
            else
            {
                return false;
            }


        }

        public List<T_VEN_CATEGORIA_CLIENTES_CAB> BuscarCategoriaCliente(int id)
        {
            List<T_VEN_CATEGORIA_CLIENTES_CAB> lista = new List<T_VEN_CATEGORIA_CLIENTES_CAB>();

            var q = from c in ContextoDeObjs.T_VEN_CATEGORIA_CLIENTES_CAB
                    where c.ID_CAT == id
                    select c;
                    
            
            lista = q.ToList();
            
            return lista;

        }


        public bool UpdateCategoriaCliente(int idCab, string usu, string cat_a_d, string cat_a_h, string cat_b_d, string cat_b_h,
                                              string cat_c_d, string cat_c_h, int mes_acu, int anio, int mes)
        {

            try
            {
                ContextoDeObjs.ExecuteStoreCommand("exec USP_ACTUALIZAR_CATEGORIA_CLIENTE @ID={0}, @USUARIO_ACT={1}, @CAT_A_DESDE={2}, @CAT_A_HASTA={3}, @CAT_B_DESDE={4}, @CAT_B_HASTA={5}, @CAT_C_DESDE={6}, @CAT_C_HASTA={7}, @MES_ACU={8}, @ANIO={9}, @MES={10}", idCab,usu,cat_a_d,cat_a_h,cat_b_d,cat_b_h,cat_c_d,cat_c_h,mes_acu,anio,mes);
                return true;

            }
            catch (Exception)
            {
                return false;
            }


        }

    }

    
}
